Apple, the Apple logo, and Macintosh are registered trademarks of Apple Computer, Inc.
Mac and OpenDoc are trademarks of Apple Computer, Inc.
We’ve had to rearrange the Semantic Events interface for SOM. SOM does not support callback procedures which were used heavily by the public API. Instead the callback interface has been moved into a C++ helper class. You’ll have to do a little rearranging of your code to get back up and running.
SemanticInterface
This class has undergone extensive change for SOM. In fact, there’s nothing there which was there before! However, all the functionality is still around, but it’s now in a helper class. Here’s a class diagram.
ODBaseSemanticInterface Specifies
interface;
no implementation
ODSemanticInterface has a SIHelperAbs Specifies
(C++ specific, for now). interface;
Delegates all methods no implementation
to SIHelperAbs.
SIHelper InstallEventHandler
InstallObjectAccessor
‘
etc.
**Could not import figure from Word doc...
You need to use both SIHelper and ODSemanticInterface now instead of just XMPSemanticInterface. Here’s some example usage.
Initialization:
ODSemanticInterface* face = new ODSemanticInterface();
You, the client, are responsible for freeing both the SIHelper and the ODSemanticInterface object.
OpenDoc parts which wish to support the SemanticInterface extension are not required to use SIHelper, SIHelperAbs, or ODSemanticInterface. (ODSemanticInterface requires SIHelperAbs, however. If you use ODSemanticInterface, you must use SIHelperAbs. They are a pair.) They may choose to replace SIHelper with their own class. If they do this, they must subclass SIHelperAbs and provide implementations for its virtual methods. If they do not wish to use ODSemanticInterface, they may create their own subclass and implement all its methods. Most developers will want to use SIHelper since its API closely matches that of Apple events and the OSL.
SIHelper classes may be shared between multiple instances of ODSemanticInterfaces. However, ODBaseSemanticInterfaces (and their subclasses must occur only once per part. They cannot be shared.)
Recording
Parts must check to see if recording is on when they are initialized (if they care.)